#ifndef _DRV_DB_TABLE_H
#define _DRV_DB_TABLE_H

#include <string.h>
#include <stdbool.h>
#include <stdint.h>

#include <sqlite3.h> 
#include "drv_db_common.h"

// 字段特征标志位（按位枚举）
typedef enum {
	FEAT_NONE					= 0,			//没有
	FEAT_NOT_NULL			= 1 << 0,	//不能为空
	FEAT_UNIQUE				= 1 << 1,	//唯一值 
	FEAT_PRIMARY_KEY	= 1 << 2,	//主键
	FEAT_AUTOINC			= 1 << 3	//自动
} db_field_feature_t;

typedef struct
{
	db_column_value_t col_type;
	db_field_feature_t cons; // 约束：PRIMARY KEY/NOT NULL等
}db_column_definition_t;


// 创建表参数结构体
typedef struct {
	db_column_definition_t* col_def;
	size_t col_count;
} db_create_table_params_t;

/***************************************************************
* Name:   drv_db_create_table()
* Input : db 数据库 table_name 创建的表名 params 创建时的参数
* Output: void 
* Return: SQLITE_OK 合格
* Author: heweilong
* Revise: V1.2
* Description: 创建表
***************************************************************/
int drv_db_create_table(sqlite3* db, const char* table_name, const db_create_table_params_t* params);

/***************************************************************
* Name:   drv_db_delete_table()
* Input : db 数据库 table_name 删除的表名
* Output: void 
* Return: SQLITE_OK 合格
* Author: heweilong
* Revise: V1.2
* Description: 删除表
***************************************************************/
int drv_db_delete_table(sqlite3* db, const char* table_name);

/***************************************************************
* Name:   drv_db_find_table()
* Input : db 数据库 table_name 查找的表名
* Output: void 
* Return: !=NULL 表存在 =NULL 表不存在
* Author: heweilong
* Revise: V1.2
* Description: 查询表
***************************************************************/
db_create_table_params_t* drv_db_find_table(sqlite3* db, const char* table_name);

/***************************************************************
* Name:   drv_db_printf_table_info()
* Input : table_info 存储空间
* Output: void 
* Return: void
* Author: heweilong
* Revise: V1.0
* Description: 打印存储的信息数据
***************************************************************/
void drv_db_printf_table_info(const db_create_table_params_t* table_info);

/***************************************************************
* Name:   drv_db_free_table_info()
* Input : table_info 存储空间
* Output: void 
* Return: void
* Author: heweilong
* Revise: V1.0
* Description: 释放存储的信息数据内存
***************************************************************/
void drv_db_free_table_info(db_create_table_params_t* table_info);

#endif